package com.yansu.own.mapper;

import com.yansu.own.entity.dto.AppContentDto;
import com.yansu.own.entity.pojo.SysAppContent;
import com.yansu.own.entity.pojo.SysWeMedia;
import com.yansu.own.entity.vo.AppContentVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * 内容管理 数据层
 */
@Mapper
@Repository
public interface SysAppContentMapper {

    /**
     * 新增单条文章内容
     */
    int addContent(SysAppContent appContent);

    /**
     * 通过id查询文章内容
     */
    AppContentVo selectById(Long id);

    /**
     * 对文章内容进行修改
     */
    int updateAppContent(SysAppContent appContent);

    /**
     *  查询内容管理列表
     */
    List<AppContentVo> getContentList(AppContentDto appContentDto);

    /**
     * 查询发布状态的内容列表
     */
    List<AppContentVo> getPublishByIds(List<Long> list);

    /**
     * 通过内容url查询指定内容
     */
    AppContentVo selectByContentUrl(String contentUrl);

    /**
     * 查询自媒体下拉列表
     */
    List<SysWeMedia> getMediaList();

    /**
     * 批量新增文章内容
     */
    int batchInsertContent(List<SysAppContent> list);

    /**
     * 通过源id查询内容
     */
    SysAppContent selectBySourceId(Long articleId);

    /**
     * 钉钉文章进行更新
     */
    int dingDingUpdate(SysAppContent appContent);

    /**
     * 根据标题判断是否重复
     */
    int selectByTitle(@Param("title") String title,@Param("sourceId") Long sourceId);

    /**
     * 钉钉新增单条文章内容
     */
    int dingInsertContent(SysAppContent appContent);

    /**
     * 判断要插入的数据与数据库同一标题的更新时间前后
     */
    int selectByTitleAndUpdateTime(@Param("title") String title,@Param("updateTime") Date updateTime,@Param("sourceId") Long sourceId);

    /**
     * 通过标题覆盖原数据库相同文章数据
     */
    int dingUpdateByTitle(SysAppContent content);
}